package com.tedu.api.thread;

/**
 *3.了解线程常用方法，结合Lambda
 *  getPriority()  基本线程API   获取线程优先级：1~10  默认：5
 *  setPriority()  常用线程API   设置线程优先级
 *  使用方法：setPriority(1~10)  数值越大，线程执行优先级别越高
 *          setPriority(Thread.MAX_PRIORITY)
 *          Thread线程类--提供常量：表示优先级：最大跟最小
 * 需求：创建三个线程 -->Lambda-->Thread线程
 *      每个线程中实现for循环：1000次
 *                         老大一声吼，地球抖三斗   max
 *                         老二一声吼，蚊子全飞走   normal
 *                         老三一声吼，笑倒一群牛   min
 * 总结：线程优先级决定：优先级数值越大，机率月高，而不是最终结果
 * 结论：三个线程，同时执行1000次输出语句【同时：并发】
 *      线程原则上可以指定优先级，不能主动获取CPU时间片，也不能
 *      决定时间片长度，只能被动分配，指定优先级只是最大程度上改变
 *      CPU时间片获取线程机率！
 * 理论上：线程优先级越高，CPU时间片获取次数越高！
 *
 */
public class Thread_Priority {
    public static void main(String[] args) {
        Thread max = new Thread(() -> {
            for (int i = 0; i < 1000; i++) {
                System.out.println("老大一声吼，地球抖三斗   max");
            }
        });
        Thread normal = new Thread(() -> {
            for (int i = 0; i < 1000; i++) {
                System.out.println("老二一声吼，蚊子全飞走   normal");
            }
        });
        Thread min = new Thread(() -> {
            for (int i = 0; i < 1000; i++) {
                System.out.println("老三一声吼，笑倒一群牛   min");
            }
        });
        min.setPriority(1);  //设置优先级：1  有几率最后执行
        max.setPriority(Thread.MAX_PRIORITY);  //设置最大/最小优先级
        // 启动线程
        max.start();//优先级  默认5
        normal.start();//优先级  默认5
        min.start();//优先级  默认5
    }

}
